From 18e27088a583ef4a3c1454d4e1ae5a739bb5b6ad Mon Sep 17 00:00:00 2001 From: robertl Date: Sat, 27 Jun 2009 23:17:02 +0000 Subject: [PATCH] Add configure-time check for Linux HID. --- config.h.in | 3 +++ configure | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++- configure.in | 27 ++++++++++++++++++++++++- delbin.c | 8 ++++---- 4 files changed, 89 insertions(+), 6 deletions(-) diff --git a/config.h.in b/config.h.in index ff1bfe607..acb907a92 100644 --- a/config.h.in +++ b/config.h.in @@ -18,6 +18,9 @@ /* Defined if you have libusb */ #undef HAVE_LIBUSB +/* Defined if you have Linux HID interface */ +#undef HAVE_LINUX_HID + /* Define to 1 if you have the `z' library (-lz). */ #undef HAVE_LIBZ diff --git a/configure b/configure index c3cac35ef..7a4bae7a6 100755 --- a/configure +++ b/configure @@ -680,7 +680,6 @@ INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA SET_MAKE - CPP GREP EGREP @@ -4333,6 +4332,62 @@ esac +case "$target" in + *-linux-*) + { echo "$as_me:$LINENO: checking for Linux HID interface" >&5 +echo $ECHO_N "checking for Linux HID interface... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + + #include + #include + #include + #include + void f(void) { + struct hidraw_devinfo info; + struct hiddev_field_info finfo; + struct hiddev_usage_ref_multi urefm; + struct hiddev_report_info rinfo; + ioctl(0, HIDIOCGRAWINFO, &info); + ioctl(0, HIDIOCGFIELDINFO, &finfo); + ioctl(0, HIDIOCSUSAGES, &urefm); + ioctl(0, HIDIOCSREPORT, &rinfo); + } +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + cat >>confdefs.h <<\_ACEOF +#define HAVE_LINUX_HID 1 +_ACEOF + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; +esac + { echo "$as_me:$LINENO: checking for random stuff to make you feel better" >&5 echo $ECHO_N "checking for random stuff to make you feel better... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: failed" >&5 diff --git a/configure.in b/configure.in index 397ef4a08..3136eccb1 100644 --- a/configure.in +++ b/configure.in @@ -36,7 +36,7 @@ AC_PROG_CC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_EXEEXT -AC_SUBST(AC_EXEEXT) +AC_SUBST(EXEEXT) AC_C_BIGENDIAN # Checks for libraries. @@ -206,6 +206,31 @@ AC_SUBST(OSJEEPS) AC_SUBST(GBSER) AC_SUBST(ZLIB) +dnl Linux HID support +case "$target" in + *-linux-*) + AC_MSG_CHECKING(for Linux HID interface) + AC_COMPILE_IFELSE([ + #include + #include + #include + #include + void f(void) { + struct hidraw_devinfo info; + struct hiddev_field_info finfo; + struct hiddev_usage_ref_multi urefm; + struct hiddev_report_info rinfo; + ioctl(0, HIDIOCGRAWINFO, &info); + ioctl(0, HIDIOCGFIELDINFO, &finfo); + ioctl(0, HIDIOCSUSAGES, &urefm); + ioctl(0, HIDIOCSREPORT, &rinfo); + }], + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_LINUX_HID, 1), + AC_MSG_RESULT(no)) + ;; +esac + AC_MSG_CHECKING(for random stuff to make you feel better) AC_MSG_RESULT(failed) diff --git a/delbin.c b/delbin.c index cf60ff9c6..eebdac42e 100644 --- a/delbin.c +++ b/delbin.c @@ -2424,7 +2424,7 @@ libusb_os_packet_write(const void* buf, unsigned size) return n; } -#if __linux +#if HAVE_LINUX_HID static const delbin_os_ops_t libusb_os_ops = #else delbin_os_ops_t delbin_os_ops = @@ -2440,7 +2440,7 @@ delbin_os_ops_t delbin_os_ops = //----------------------------------------------------------------------------- // Linux -#if __linux +#if HAVE_LINUX_HID #include #include @@ -2617,11 +2617,11 @@ delbin_os_ops_t delbin_os_ops = { NULL }; -#endif // __linux +#endif // HAVE_LINUX_HID //----------------------------------------------------------------------------- // stubs -#if !(_WIN32 || __linux || __APPLE__ || HAVE_LIBUSB) +#if !(_WIN32 || __APPLE__ || HAVE_LIBUSB || HAVE_LINUX_HID) static void stub_os_init(const char* fname) { -- 2.30.2